package map;

import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class HashMapTest {

    public static void main(String[] args) {
        //Map<Object, Object> map = new HashMap(8);
        /**
         * 0001 0000 16
         * 0000 0100 4
         *
         * 0010 0000 32
         * 0000 1000 8
         * ConcurrentHashMap 的 Key 和 Value 都不能为 null，而 HashMap 却可以为空，为什么这么设计？
         * 1.在多线程情况下 map.get(key) 返回 null，无法区分 value 原本就是空值，
         * 还是 Key 没有映射到对应的value，Key不能为空也是类似的原因。
         * 2.而应用于单线程状态下的hashmap却可以用containKey（key）去判断到底是否包含了这个null值。
         */
        Map<Object, Object> map = new ConcurrentHashMap<>();
        //assert
        map.put(null,1);
    }

}
